Jump to content
uniGUI Discussion Forums

stas

uniGUI Subscriber
  • Content Count

    350
  • Joined

  • Last visited

  • Days Won

    31

Everything posted by stas

  1. Safari, Chrome какой броузер? На ipad нормально
  2. Ну, полный код такой type TmyUnimFileEdit=class(TUnimFileEdit); TMyUnimcustomButtonItem=class(TUnimcustomButtonItem); TmyUniToolButton=class(TUnimToolButton); procedure TfmViewMPhoto.CreateFileInput; var FJSEdit:TUnimFileEdit; begin FJSEdit:=TUnimFileEdit.Create(Self); FJSEdit.Name := 'FileEdit_'+FJSEdit.JSName; FJSEdit.Visible:=false; FJSEdit.Parent:=Self; TmyUnimFileEdit(FJSEdit).JSHackObject(FJSEdit.JSControl); TmyUnimFileEdit(FJSEdit).FieldLabelWidth:=30; TmyUnimFileEdit(FJSEdit).FieldLabel:=''; FJSEdit.Name := FJSEdit.JSName; TmyUnimFileEdit(FJSEdit).JSConfig('accept',['image/jpeg']); TmyUnimFileEdit(FJSEdit).JSCall('on',['change', TmyUnimFileEdit(FJSEdit).JSFunction('var input=document.getElementsByName("'+TmyUnimFileEdit(FJSEdit).JSName+'")[0];'+ ' Ext.Viewport.mask({ xtype: "loadmask", message: "Завантаження..." });'#13#10+ ' var filesToUpload = input.files; '#13#10+ ' var file = filesToUpload[0]; '#13#10+ ' var img = document.createElement("img"); '#13#10+ ' var reader = new FileReader(); '#13#10+ ' reader.onload = function(e) '#13#10+ ' { '#13#10+ ' img.src = e.target.result; '#13#10+ ' '#13#10+ ' var canvas = document.createElement("canvas"); '#13#10+ ' var ctx = canvas.getContext("2d"); '#13#10+ ' ctx.drawImage(img, 0, 0); '#13#10+ ' '#13#10+ ' var MAX_WIDTH = 1024; '#13#10+ ' var MAX_HEIGHT = 768; '#13#10+ ' var width = img.width; '#13#10+ ' var height = img.height; '#13#10+ ' '#13#10+ ' if (width > height) { '#13#10+ ' if (width > MAX_WIDTH) { '#13#10+ ' height *= MAX_WIDTH / width; '#13#10+ ' width = MAX_WIDTH; '#13#10+ ' } '#13#10+ ' } else { '#13#10+ ' if (height > MAX_HEIGHT) { '#13#10+ ' width *= MAX_HEIGHT / height; '#13#10+ ' height = MAX_HEIGHT; '#13#10+ ' } '#13#10+ ' } '#13#10+ ' canvas.width = width; '#13#10+ ' canvas.height = height; '#13#10+ ' var ctx = canvas.getContext("2d"); '#13#10+ ' ctx.drawImage(img, 0, 0, width, height); '#13#10+ ' '#13#10+ ' var dataurl = canvas.toDataURL("image/jpeg"); var avalue=input.value; input.value=""; '#13#10+ ' ajaxRequest('+tlbBtn.JSName+',"export",["type=jpeg","uri="+dataurl,"filename="+avalue]);'#13#10+ ' }; '#13#10+ ' reader.readAsDataURL(file); '#13#10 )]); UniSession.AddJS(tlbBtn.JSName+'.owner.fileInput='+FJSEdit.JSName+';'); end; Я поднимал свн 2-х годичной давности, что-то мне там не понравилось, но файлы сжимались И еще procedure TfmViewMPhoto.tlbBtnAjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings); var MS:TMemoryStream; ss:String; begin if EventName='export' then begin MS:=TMemoryStream.Create; try ss:=copy(Params.Values['uri'],pos(',',Params.Values['uri'])+1,length(Params.Values['uri'])); uIdCoderMIME.TIdDecoderMIME.DecodeStream(SS,MS); MS.Position:=0; imPhoto.LoadFromStream(MS); UniSession.AddJS('Ext.Viewport.unmask();'); finally MS.Free; end; end; end;
  3. stas

    TUnimap компонент

    Там есть кнопочка "НАЖМИ МЕНЯ", нажмите ее пожалуйста, и листинг в студию, может помочь
  4. Есть. Кусок кода примерно такой var filesToUpload = input.files; var file = filesToUpload[0]; var img = document.createElement("img"); var reader = new FileReader(); reader.onload = function(e) { img.src = e.target.result; var canvas = document.createElement("canvas"); var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0); var MAX_WIDTH = 1024; var MAX_HEIGHT = 768; var width = img.width; var height = img.height; if (width > height) { if (width > MAX_WIDTH) { height *= MAX_WIDTH / width; width = MAX_WIDTH; } } else { if (height > MAX_HEIGHT) { width *= MAX_HEIGHT / height; height = MAX_HEIGHT; } } canvas.width = width; canvas.height = height; var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0, width, height); var dataurl = canvas.toDataURL("image/jpeg"); var avalue=input.value; input.value=""; ajaxRequest(+tlbBtn.JSName+,"export",["type=jpeg","uri="+dataurl,"filename="+avalue]); }; reader.readAsDataURL(file); )]); От себя добавлю, я перестал видеть смысл использовать Мобильную версию Унигуи (Фаршад ее похерил) Посмотрите в сторону нативных приложений
  5. stas

    Сохранение отчета

    Тогда, очень странно. Дело в том, что если Вы не создаете отдельный поток для генерации отчета, отсылка файла должна произойти после его сохранения. По другому быть не может.
  6. stas

    Сохранение отчета

    SQL сервер напрямую может генерировать pdf? Не знал
  7. stas

    Сохранение отчета

    Отчет строится средствами чего?
  8. POST https://your.unigui-server.com/youproject/dofileupload?my_data=[some_data]&_S_ID=[your_session_id] On unigui server procedure TUniMainModule.UniGUIMainModuleHandleRequest(ASession: TObject; var Handled: Boolean); var S:TUniGUISession; begin if (ASession is TUniGUISession) then begin S:=TUniGUISession(ASession); if (S.ARequest.Document='/dofileupload') then begin //save file from poststream Handled:=false //??? end end;
  9. 1) Works only in standalone, service mode 2) Tested over ARR proxy (IIS), Nginx 3) Use same port that UniServerModule 4) Enjoy WSEcho.zip P.S. Dont use with HyperServer(HyperService)
  10. stas

    Настройки ISAPI

    Я уже это рассказывал, это сложно, но становится больше возможностей. Цитирую Смотрите Ставите ARR v3+ Url rewrite UniGuiHyperService+UniGuiApplication stand alone В ARR разрешаете прокси Далее создаете обыкновенный сайт в IIS Предположим у Вас UniGuiHyperService вертится на порту 8077 Допустим, вы хотите чтобы у вас сайт вертелся по имени mysite.com/myproject В Директории Сайта создаете папочку myproject Там создаете web.config следующего содержимого <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="redirect" stopProcessing="true"> <match url="(.*)" /> <action type="Rewrite" url="http://127.0.0.1:8077/{R:1}" /> </rule> </rules> </rewrite> </system.webServer> </configuration> Далее в UrlPath UniServermodule Вашего проекта И в cfg UniGuiHyperService прописываете /myproject Вуаля, Ваш сайт работает
  11. stas

    Настройки ISAPI

    Отказывайтесь от этого, dll-ки не пропускают многие антивирусы, уходите от старой технологии. Работая с сервисом, Вы не зависите от веб-сервера, и вообще от того, что смотрит в мир.
  12. stas

    Настройки ISAPI

    Зайдите в любую папочку в консоле иис (функция Документ по умолчанию) После модификации посмотрите содержимое файла web.config в этой папочке
  13. stas

    Настройки ISAPI

    Можете, страницы по умолчанию допишите туда Web.dll Это не пул, это папочка, Можете смотреть в сторону ARR и URLrewrite Но тогда ISAPI выкиньте Только сервисы, только хардкор
  14. stas

    iPhone.Safari

    Я думаю, Safari не разрешит, у меня хром из-за просрочки сертификата, вообще сайт не грузил А чем LetsEncrypt плох?
  15. Ура, 13.01 я получаю новое обновление, и что я вижу 1) Две новые темы. Новые темы, Карл, я не знаю куда притулить старые, а тут две новые. Дорожная карта рушится, но у нас есть две новые темы. 2) Combobox mode, What is this? where is example for use combobox mode ? Нет ответа 3) Values will be used to store items, изумительно, что я должен делать по этому поводу? Стенать, прыгать от счастья. Фаршад за пять лет работы не смог передать id как Value в комбобоксы, особенно в лукапы, я выкручиваюсь как могу, но тревожить его не смею, он же темы разрабатывает. Фсё, все, за месяц работы ДВЕ ТЕМЫ, и неизвестно что. Да, баги исправляются, но добавляются новые, я почти год прошу исправить ошибку с UrlPath и Mobile, нет ответа. Я не вижу исправления и чужих добавленных ошибок , и прогресса по ним. У всех есть возможность это видеть, у Фаршада нет. Что мы видим за последний год, потерянные полгода, невыполненные обещания. Я разочарован такой работой. З.Ы. Накипело З.З.Ы Я никогда не думал, что это скажу, но поддержите лайком, если вы со мной согласны, или контраргументируйте. Спасибо.
  16. stas

    Аналог DataSnap

    Это в принципе события TidHttpServer, просто Фаршад их передает. Можно там порыться, я, честно говоря, не думал над этим вопросом.
  17. Странно, конечно. У нас такой фигней специально обученная девочка занимается, (мне продлили до 10.05), может у них девочкам нельзя таким заниматься.
  18. stas

    Настройки ISAPI

    К форуму Унигуи это имеет такое же отношение, как очковая змея к очкам. В IIS листинг уберите, по умолчанию его нет, видать наклацали (Сайт-Просмотр каталога)
  19. Блин, "полевым страницам" Я долго тупил, пытаясь понять, что такое полевые страницы. 1) Определите список не левых, делов-то. 2) Нельзя, вариант следующий, передаете SESSION_ID в урл, тогда вызовется соотв метод главного модуля, там ставите флаг, а из формы проверяете по таймеру флаг. 2а) можно хранить потребность в регистрации в ServerModule тогда флаг(флаги) там 2б) Можно через вебсокеты или LongPool, но это сложно. З.Ы. Поддержка тут хорошая, но для купивших. Увы.
  20. Если у Вас обычное приложение, просто выдавайте AResponseInfo.ContentText c чем-то
  21. Смотрите, сервер не воспринимает такого текста, какой я передаю. Поэтому я его преобразую в обычные параметры,меняю исходный путь к документу на канонический и отдаю дальше, а модуль далее работает по своему обычному принципу, смотрит параметры и делает свои дела. Это всего лишь пример, возможно можно лучше
  22. stas

    UniDBGrid title wrap

    Можно, через css, но про фильтры забудьте Вертикально, это издевательство. ООН не позволит
  23. stas

    roadmap 2020

  24. stas

    Загрузка файлов

    ScreenMask?
  25. stas

    Не отображать ошибки

    TUniServerModule.OnException ?
×