cartodb-4.42/lib/assets/javascripts/dashboard/mobile-apps.js

93 lines
3.0 KiB
JavaScript
Raw Normal View History

2024-04-06 13:25:13 +08:00
const $ = require('jquery');
const _ = require('underscore');
const Backbone = require('backbone');
const DashboardHeaderView = require('dashboard/components/dashboard-header-view');
const HeaderViewModel = require('dashboard/views/mobile-apps/header-view-model');
const LocalStorage = require('dashboard/helpers/local-storage');
const IconSelector = require('dashboard/components/icon-selector/icon-selector-view');
const DeleteMobileApp = require('dashboard/views/mobile-apps/delete-mobile-app/delete-mobile-app-view');
const AppPlatformsLegends = require('dashboard/components/app-platforms-legends');
const UserModel = require('dashboard/data/user-model');
const ConfigModel = require('dashboard/data/config-model');
const ModalsServiceModel = require('builder/components/modals/modals-service-model');
require('dashboard/data/backbone/sync-options');
const ForbiddenAction = require('builder/data/backbone/network-interceptors/interceptors/forbidden-403');
const NetworkResponseInterceptor = require('builder/data/backbone/network-interceptors/interceptor');
NetworkResponseInterceptor.addURLPattern('api/v');
NetworkResponseInterceptor.addErrorInterceptor(ForbiddenAction());
NetworkResponseInterceptor.start();
const configModel = new ConfigModel(
_.defaults({ base_url: window.user_data.base_url }, window.config)
);
if (window.trackJs) {
window.trackJs.configure({
userId: window.user_data.username
});
}
/**
* Entry point for the new keys, bootstraps all dependency models and application.
*/
$(function () {
const userModel = new UserModel(window.user_data, { configModel });
const mobileApp = window.mobile_app_data;
const modals = new ModalsServiceModel();
new DashboardHeaderView({
el: $('#header'), // pre-rendered in DOM by Rails app
model: userModel,
configModel,
viewModel: new HeaderViewModel(),
localStorage: new LocalStorage()
}).render();
// Avatar
const iconSelectorNode = $('.js-iconSelector');
if (iconSelectorNode.length > 0) {
const iconSelector = new IconSelector({
el: iconSelectorNode,
configModel,
renderModel: new Backbone.Model({
id: userModel.get('id'),
name: mobileApp.name,
inputName: $('.js-fileIcon').attr('name'),
icon_url: mobileApp.icon_url
}),
iconAcceptedExtensions: window.icon_valid_extensions
});
iconSelector.render();
}
// Mobile app deletion
const deleteButton = $('.js-deleteMobileApp');
if (deleteButton.length > 0) {
deleteButton.click(function (ev) {
ev.preventDefault();
modals.create(function (model) {
return new DeleteMobileApp({
modalModel: model,
configModel,
authenticityToken: window.authenticity_token,
needsPasswordConfirmation: userModel.needsPasswordConfirmation(),
mobileApp: mobileApp
});
});
});
}
if ($('.js-appPlatformsLegend').length > 0) {
new AppPlatformsLegends({
el: $('.js-MobileAppForm'),
appPlatforms: mobileApp['mobile_platforms']
}).render();
}
});