<!DOCTYPE html> <html> <head> <title>Hybrid</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta id="viewport" name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"> <link rel="shortcut icon" type="image/x-icon" href="/panel/content/images/favicon.ico" /> <link rel="stylesheet" type="text/css" href="/panel/content/css/basic.css" media="screen" /> <link rel="stylesheet" type="text/css" href="/panel/content/css/campaign.css" /> <link rel="stylesheet" type="text/css" href="/panel/content/css/font-face.css" /> <link rel="stylesheet" type="text/css" href="/panel/content/css/media.css" media="only screen and (max-width: 1690px)" /> </head> <body class="custom-scrollbar"> <div data-bind="template: { html: html, data: data }"></div> <script src="/panel/scripts/appconfig.js" id="appconfig-script"></script> </body> </html>
window.ReJS = {}; window.ReJS.Config = {}; //#region url ReJS.CoreAPI = function (url) { return window.location.protocol + '//' + window.location.host + '/core/' + url; }; ReJS.LoginUrl = function (url) { return window.location.protocol + '//' + window.location.host + '/login/' + url; }; ReJS.CDN = function (url) { return ReJS.Config.cdnUrl + "/" + url; }; //#endregion //#region var query = new XMLHttpRequest(); query.open('GET', ReJS.CoreAPI('metadata/getconfig'), false); query.setRequestHeader('Content-Type', 'application/json'); query.setRequestHeader('Accept', '*/*'); query.send(null); if (query.status == 200) { ReJS.Config = JSON.parse(query.responseText); ReJS.Tail = ReJS.Config.isMinJs ? ".min" : ""; } if (query.status == 401) { window.location = ReJS.LoginUrl("login?ReturnUrl=%2f") + window.location.hash; } //#endregion //#region ReJS.AntiCahceKey = "bust=46446348"; //#endregion //#region ReJS.DebugConfig = { route: true, state: true, stateCache: true, stateOnError: true, stateOnCallBackError: true, stateIncorrectQuery: true, stateLoadingState: true, resourceLoad: true, modalEvent: true, poolingEnables: true, showErrors: true, consoleLogging: function (flag) { this.route = flag; this.state = flag; this.stateCache = flag; this.stateOnError = flag; this.stateOnCallBackError = flag; this.stateIncorrectQuery = flag; this.stateLoadingState = flag; this.resourceLoad = flag; this.modalEvent = flag; }, poolingSwitch: function (flag) { this.poolingEnables = flag; }, displayErrors: function (flag) { this.showErrors = flag; } }; ReJS.DebugConfig.consoleLogging(ReJS.Config.isConsoleLogging); ReJS.DebugConfig.displayErrors(ReJS.Config.isDisplayErrors); ReJS.DebugConfig.poolingSwitch(ReJS.Config.isPoolingSwitch); //#endregion //#region var startdrawtag = document.getElementById("appconfig-script"); var qwerty1tag = document.createElement("script"); qwerty1tag.setAttribute("src", '/panel/scripts/plugins/core/require' + ReJS.Tail + '.js'); qwerty1tag.setAttribute("data-main", '/panel/scripts/init' + ReJS.Tail); startdrawtag.parentElement.appendChild(qwerty1tag); //#endregion
requirejs.config({ enforceDefine: true, catchError: true, waitSeconds: 20, min: ReJS.Tail, urlArgs: ReJS.AntiCahceKey, baseUrl: "/panel/scripts/", paths: { //jquery 'jquery': 'plugins/jquery/jquery', 'jquery-ui-custom': 'plugins/jquery/jquery-ui', 'jquery-cropit': 'plugins/jquery/jquery-cropit', 'jquery-datepicker': 'plugins/jquery/jquery-datepicker', 'jquery-scrollTo': 'plugins/jquery/jquery-scrollTo', 'jquery-stickytableheaders': 'plugins/jquery/jquery-stickytableheaders', //knockout 'knockout': 'plugins/knockout/knockout-3-1-0', 'knockout-mapping': 'plugins/knockout/knockout.mapping', 'knockout-custom-bindings': 'plugins/knockout/knockout.custombindings', 'knockout-both-template': 'plugins/knockout/knockout.bothtemplate', 'knockout-validation': 'plugins/knockout/knockout.validation', 'knockout-validation-rules': 'plugins/knockout/knockout.validation.rules' // etc... }, shim: { 'underscore': { exports: '_' }, 'routie': { exports: 'routie' }, 'browser-detect': { exports: 'bowser' } // etc... } }); // AMD is here !!! define(["appstart"], function () { });
define(["knockout", "controller/advertisers/adLibraryController"], function (ko, map, adLibraryController) { return function () { var self = this; self.ads = ko.observableArray([]); // self.onRender = function () { // }; self.onLoad = function (loadComplete) { // adLibraryController.GetAll(function (data) { // data = [{'name': ''}, ...] // self.ads(data); // loadComplete(); }); } } } );
<div data-bind="foreach: $self.ads"> <span data-bind="text: name"> </div>
define(["jquery", "knockout", "state/page", "browser-detect", "service/queryManager", "underscore", "knockout-both-template", "knockout-custom-bindings"], function ($, ko, PageState, browserDetect, QM, _) { ReJS.Root = {}; ReJS.RootState = {}; ReJS.RouteObject = {/* ... */}; // innerMessage // : // ReJS.innerMessage({example: true}); // // : // ReJS.innerMessage(function (message) { // if (message && message.example) { // ... // } // }) ReJS.innerMessageListeners = []; ReJS.innerMessage = function (message) { if (typeof (message) == "function") { ReJS.innerMessageListeners.push(message); } else { for (var i = 0; i < ReJS.innerMessageListeners.length; i++) { ReJS.innerMessageListeners[i](message); } } }; // if ((browserDetect.msie && browserDetect.version < 10) || (browserDetect.chrome && browserDetect.version < 18) || (browserDetect.firefox && browserDetect.version < 10.0) || (browserDetect.safari && browserDetect.version < 5) || (browserDetect.opera && browserDetect.version < 12.0)) { new PageState({ file: "unsupport", onLoad: function (pageInfo, state) { ko.applyBindings(state); state.onRender(); }, onError: ReJS.preLoadError }); } else { loadMetadata(); } // metadata function loadMetadata() { $.when( QM.ajaxGet({ url: "metadata/getenums", success: function (recvddata) { // } }), QM.ajaxGet({ url: "metadata/getmodules", success: function (recvddata) { // } }), QM.ajaxGet({ url: "metadata/getaccountinfo", success: function (recvddata) { // } }) ).done(function () { new PageState({ file: "loader", onLoad: function (pageInfo, state) { ko.applyBindings(state); // << --- loader.js state.onRender(); }, onError: ReJS.preLoadError }); } ); } } );
define(["knockout", "stateManager/pages", "stateManager/shared", "stateManager/popup", "stateManager/menu", "dateUtils", "service/queryManager"], function (ko, SMPages, SMShared, SMPopup, SMMenu, dateUtils, QM) { return function () { // var self = this; // , var totalProgress = SMPages.pageListCount + SMPopup.popupListCount + SMShared.molulListCount + SMMenu.menuModulListCount; // var currentProgress = 0; // var nextProgress = function () { ++currentProgress; console.log("totalProgress ==> ", totalProgress); console.log("currentProgress ++> ", currentProgress); if (currentProgress == totalProgress) { loadComplete(); } }; // , c metadata var loadComplete = function () { ReJS.isLoadInterface = true; ko.applyBindings(SMShared.shared.Root.state); SMShared.shared.Root.state.onShow(); }; // self.onRender = function () { // SMShared.loadModul(nextProgress); SMMenu.loadMenuModul(nextProgress); SMPages.loadPages(nextProgress); SMPopup.loadPopup(nextProgress); } }; } );
define(["knockout", "text"], function (ko) { return function (options) { // var self = this; // , self.data = ko.observable(null); //js self.html = ko.observable(null); //html self.onRender = function () { self.data().onRender(); }; self.onLoad = function (params) { // (2) self.data().onLoad(params); // (3) }; // , : js text var dataPrefix = "/panel/modules"; var textPrefix = "text!/panel/modules"; // var dataSource = ""; var textSource = ""; // , ; modulInfo var pageName = ""; var pageType = ""; // options var dir = options.dir ? options.dir : ""; var file = options.file ? options.file : ""; pageName = dir + file; dataSource = dataPrefix + "/" + dir + "/" + file + "/" + file + ReJS.Tail + ".js"; textSource = textPrefix + "/" + dir + "/" + file + "/" + file + ".html"; require([dataSource, textSource], function (data, html) { var data = typeof data === "function" ? new data() : data; // javascript data self.data(data); // html html self.html(html); // var pageInfo = { "pageFile": file, "pageDir": dir, "pageName": pageName }; // if (options.onLoad && typeof options.onLoad === "function") { options.onLoad(pageInfo, self); // (1) } // errback, , requirejs. }, function (err) { console.log('!ERR ' + file); // if (err.requireModules) { for (var reqmod in err.requireModules) { console.log('>>>' + err.requireModules[reqmod]); } } // if (options.onError && typeof options.onError === "function") { options.onError(options); } }); }; });
define(["state/page"], function (PageState) { var StateManager = function () { var self = this; self.modules = [ { name: 'campaigns', dir: "advertiser/pages" }, { name: 'adlibrary', dir: "advertiser/pages" }, { name: 'audience', dir: "advertiser/pages" } ]; // self.pages = []; // self.loadPages = function (loadComplete) { // for (var i = 0; i <self.modules.length; i++) { var module = self.modules[i]; (function (module) { new PageState({ file: module.name, dir: module.dir, onLoad: function (pageInfo, state) { // (1) // for (var j = 0; j < self.modules.length; j++) { // , if (self.modules[j]['name'] == pageInfo.pageFile && self.modules[j]['dir'] == pageInfo.pageDir) { // self.pages[pageInfo.pageName] = { 'name': pageInfo.pageName, // name - 'state': state, // state - knockout 'pageName':self.modules[j]['name'] // pageName - }; } } state.onLoad(loadComplete); // (2) } }); })(module); } } }; return new StateManager(); });
Source: https://habr.com/ru/post/262917/
All Articles